=begin
Numeric
    Interger
        Fixnum,Bignum
    Float
    Rational
    Complex
=end

# Rational 分数
a,b=Rational(1,2),Rational(2,5)
# Rational#to_f，Rational#numerator 分子，Rational#denomination 分母
c=Complex(1,2) #=>(1+2i)
# Complex#real，Complex#imaginary

#字面量
=begin
字面量的_会被自动忽略，1234567==1_234_567
123
0123 #=> 8进制 83
0o123 #=> 8进制 83
0d123 #=> 123
0x123 #=> 16进制 291
0b1111011 #=> 123 2进制
123.45
1.23e2 # E
1.23e-2 # E
123r #=> 有理数 123/1
123.45r #=> 有理数 12345/100=2469/20
123i
123.45i
=end

#运算符
# + - * / % **(乘方)
p 5**-2 #=> (1/25)
# x.div(y) #=> x/y的商的整数
# x.quo(y) #=> 商的float，如果x，y都是整数，返回Rational
# x.module(y) #=> x%y
# x.divmod(y) #=> 返回数组，ary=[x/y向下取整,x%y]
# x.remainder(y) #=> x/y的余数，符号与x一致

# Math模块
include Math 
#数值类型转换
=begin
Interger#io_f
Float#to_i #=>去小数部分
Float#round(小数位数)
Float#ceil
Float#floor
Float#
to_r
to_c
=end

#位运算(Interger)
=begin
#运算符
~ 按位取反(一元)
& 按位与
| 按位或
^ 按位异或((a&~b|~a&b))
>> 位右移
>> 位左移
=end

#随机数
p Random.rand #=> 0~1的小数
p Random.rand(10) #=> 0~9的整数
p Random.rand(0..9) #=>同上
#初始化随机数生成器
r1=Random.new(1) #=> 初始化随机数组，可以不指定参数
# securerandom库
require "securerandom"
p SecureRandom.random_bytes(12),SecureRandom.base64(12)

#计数(Interger)
# n.times{}
# from.upto(to){}
# from.downto(to){}
# from.step(to,step){}

#近似误差值
# 将小数转换为Rational类
# bigdecimal库

# Comparable模块
#封装的方法 < <= == >= > between?
class Vector
    include Comparable
    attr_accessor:x,:y 
    def initialize(x,y)
        @x,@y=x,y 
    end
    def scalar
        sqrt(x**2+y**2)
    end
    def <=>(other)
        scalar<=>other.scalar
    end
end

v1=Vector.new(1,2)
v2=Vector.new(3,4)
p v1<=>v2
p v1>v2

